#!/usr/bin/env python3
"""
直播录制转推管理后端服务启动脚本
跨平台支持：Windows + CentOS/Linux
"""
import uvicorn
import sys
import asyncio
import platform
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

# 从配置文件读取设置
from app.core.config import settings

def configure_event_loop():
    """配置跨平台事件循环"""
    system = platform.system().lower()
    
    if system == "windows":
        # Windows平台特殊处理
        try:
            asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
            print(f"[启动信息] Windows平台已配置WindowsSelectorEventLoopPolicy")
        except Exception as e:
            print(f"[启动警告] Windows事件循环配置失败: {e}")
    elif system in ["linux", "darwin"]:
        # Linux/CentOS和macOS使用默认配置
        print(f"[启动信息] {platform.system()}平台使用默认事件循环策略")
    else:
        print(f"[启动信息] 未知平台 {system}，使用默认配置")

if __name__ == "__main__":
    # 配置事件循环
    configure_event_loop()
    
    # 跨平台启动参数
    is_windows = platform.system().lower() == "windows"
    
    # 使用配置文件中的设置
    uvicorn.run(
        "app.main:app",
        host=settings.HOST,
        port=settings.PORT,
        reload=False,  # 生产环境禁用reload，避免事件循环问题
        log_level="info",
        access_log=True,
        loop="asyncio",  # 显式指定使用asyncio事件循环
        workers=1  # 单进程模式，确保事件循环兼容性
    )